int __cdecl httrackengine_start(void* dummy) { // appelΘ lors du dΘmarrage du miroir (premiΦres requΦtes)
#if USE_RAS
// connexion RAS
has_started=1; // dΘmarrage
connected=0;
conn = NULL;
memset(&SInfo, 0, sizeof(SInfo));
if (LibRasUse) {
if (ShellOptions->_RasString.GetLength()>0) { // sΘlection provider
if (!LibRas->RasDial(NULL,NULL,&ShellOptions->_dial,NULL,NULL,&conn)) {
RASCONNSTATUS status;
do {
status.dwSize = sizeof(status);
LibRas->RasGetConnectStatus(conn,&status);
switch(status.rasconnstate) {
case RASCS_Connected :
connected=1;
break;
case RASCS_Disconnected :
strcpybuff(connected_err,LANG(LANG_F3 /*"Could not connect to provider"*/));
connected=-1;
break;
}
} while(connected==0);
} else {
strcpybuff(connected_err,LANG(LANG_F3 /*"Could not connect to provider","Impossible d'Θtablir la connexion"*/));
connected=-1;
//termine=1;
}
}
//
if (connected != -1) // si pas d'erreur RAS
return 1;
else
return 0;
} else
return 1;
#else
return 1;
#endif
}
int httrackengine_end() { // appelΘ lors de la fin du miroir (plus de liens α charger)
WHTT_LOCK();
termine=1;
if (_Cinprogress_inst) {
_Cinprogress_inst->EndDialog(IDOK);
_Cinprogress_inst=NULL;
}
WHTT_UNLOCK();
return 1;
}
int __cdecl httrackengine_htmlcheck(char* html,int len,char* url_adresse,char* url_fichier) { // appelΘ α chaque fois qu'un html doit Ωtre scannΘ (utile pour la prospection mais inutile ici)
return 1;
}
int __cdecl httrackengine_chopt(void* opt) {
return 1;
}
// Le routine la plus utile sans doute: elle refresh les tableaux
// C'est la 2e routine en thread qui assure le refresh graphique
// (plus efficace)
// -->C'est elle qui dΘcide de tout arrΩter si elle dΘtecte in termine_request<--
int __cdecl httrackengine_loop(
void* _back,int back_max,int back_index,
int lien_n,int lien_tot,
int stat_time,
hts_stat_struct* stats) { // appelΘ α chaque boucle de HTTrack
static char s[HTS_URLMAXSIZE*2]=""; // utilisΘ plus loin
int stat_written=-1;
int stat_updated=-1;
int stat_errors=-1;
int stat_warnings=-1;
int stat_infos=-1;
int nbk=-1;
LLint nb=-1;
int stat_nsocket=-1;
LLint stat_bytes=-1;
LLint stat_bytes_recv=-1;
int irate=-1;
WHTT_LOCK();
if (stats) {
stat_written=stats->stat_files;
stat_updated=stats->stat_updated_files;
stat_errors=stats->stat_errors;
stat_warnings=stats->stat_warnings;
stat_infos=stats->stat_infos;
nbk=stats->nbk;
stat_nsocket=stats->stat_nsocket;
irate=(int)stats->rate;
nb=stats->nb;
stat_bytes=stats->nb;
stat_bytes_recv=stats->HTS_TOTAL_RECV;
}
#if !SHELL_MULTITHREAD
static TStamp last_time;
#endif
int rate;
// casts
lien_back* back=(lien_back*) _back;
// static int ft=-1;
if (back_max == 0) {
#if !SHELL_MULTITHREAD
last_time=0;
#endif
// en cas de manque de time
SInfo.refresh=1;
SInfo.stat_timestart=time_local();
WHTT_UNLOCK();
return 1;
}
if ((termine) || (termine_requested)) {
SInfo.refresh=0; // pas de refresh
SInfo.refresh=0; // pas de refresh
termine_requested=1;
WHTT_UNLOCK();
return 0;
}
if (stat_written>=0) SInfo.stat_written=stat_written;
if (stat_updated>=0) SInfo.stat_updated=stat_updated;
if (stat_errors>=0) SInfo.stat_errors=stat_errors;
if (stat_warnings>=0) SInfo.stat_warnings=stat_warnings;
if (stat_infos>=0) SInfo.stat_infos=stat_infos;
#if SHELL_MULTITHREAD
//if (((tl-last_time)>=100) || ((tl-last_time)<0)) { // chaque 100 ms
if (SInfo.ask_refresh) {
#else
TStamp tl=0;
{
time_t tt;
struct tm* A;
tt=time(NULL);
A=localtime(&tt);
tl+=A->tm_sec;
tl+=A->tm_min*60;
tl+=A->tm_hour*60*60;
//tl+=A->tm_yday*60*60*24;
//tl+=A->tm_year*60*60*24*365;
tl*=1000; // en ms
struct _timeb timebuffer;
char *timeline;
_ftime( &timebuffer );
timeline = ctime( & ( timebuffer.time ) );
tl+=timebuffer.millitm; // + ms
}
if (((tl-last_time)>=HTS_SLEEP_WIN) || ((tl-last_time)<0)) { // chaque 250 ms
strcatbuff(end_mirror_msg,LANG(LANG_F21 /*"\nSee the log file if necessary.\n\nClick OK to quit WinHTTrack.\n\nThanks for using WinHTTrack!","\nVoir le fichier log au besoin\n\nCliquez sur OK pour quitter WinHTTrack\n\nMerci d'utiliser WinHTTrack."*/));
//AfxMessageBox(s,MB_OK+MB_ICONINFORMATION);
} else {
strcpybuff(end_mirror_msg,LANG(LANG_F22 /*"The mirror is finished.\nClick OK to quit WinHTTrack.\nSee log file(s) if necessary to ensure that everything is OK.\n\nThanks for using WinHTTrack!","Le miroir est terminΘ\nCliquez sur OK pour quitter WinHTTrack\nVoir au besoin les fichiers d'audit pour vΘrifier que tout s'est bien passΘ\n\nMerci d'utiliser WinHTTrack!"*/));
//AfxMessageBox("The mirror is finished.\nClic OK to quit WinHTTrack.\nSee log file(s) if necessary to ensure that everything is OK.\n\nThanks for using WinHTTrack!",MB_OK+MB_ICONINFORMATION);
// ShellExecute(0,"open",,"","",);
}
#if USE_RAS
// erreur ras
if (connected == -1)
if ((int) strlen(connected_err) > 0)
strcpybuff(end_mirror_msg,connected_err);
#endif
{
char pathlog[HTS_URLMAXSIZE*2];
strcpybuff(pathlog,dialog0->GetPath());
Ciplog form;
if (strlen(pathlog)>0)
if ((pathlog[strlen(pathlog)-1]!='/') && (pathlog[strlen(pathlog)-1]!='\\'))
strcatbuff(pathlog,"/");
// fichier log existe ou on est tΘlΘcommandΘ par un !
if ( (fsize(fconcat(pathlog,"hts-err.txt")))>0) {
strcatbuff(end_mirror_msg,LANG(LANG_F23 /*"\n\nTip: Click [View log file] to see warning or error messages","\n\nConseil: [Voir fichiers log] pour voir les erreurs et messages"*/));
}
}
//this_Cinfoend->m_infoend = msg;
inprogress->SendMessage(WM_USER + 4); // avertir
if (fp_debug) {
fprintf(fp_debug,"DoModal end dialog, waiting\r\n");
fflush(fp_debug);
}
/*
if (info.DoModal() == IDC_NewProject) { // relancer programme!
// copie de onnewproject() de wid1::
CWinApp* pApp = AfxGetApp();
CString name = pApp->m_pszHelpFilePath;
name=name.Left(name.GetLength()-4);
name += ".EXE";
ShellExecute(NULL,"open",name,"","",SW_RESTORE);
}
*/
if (fp_debug) {
fprintf(fp_debug,"Final info OK, leaving..\r\n");
fflush(fp_debug);
}
}
else {
}
if (argv != NULL)
freet(argv);
}
// int LANG_T(int);
// char* LANG(char* english,char* francais);
/* interface lang - lang_string="stringlang0\nstringlang1\n..laststring" */